home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 4 / ETO Development Tools 4.iso / Essentials / MacApp Documentation / MacApp.TECH$ Archives / 1990 / Aug 90 / MacApp.Tech$ 8⁄3⁄90 / 1661-Re TEditText and TTE-Jul90 < prev    next >
Encoding:
Text File  |  1991-03-06  |  5.7 KB  |  202 lines  |  [TEXT/GEOL]

  1. Item    2572439                         28-July-90        08:34PDT
  2.  
  3. From:   ITA0259                         PROSOFT 1PADPDVENTY,IDV
  4.  
  5. To:     MACAPP.TECH$                    MacApp Technical
  6.  
  7. Sub:    RE> TEditText and TTEView
  8.  
  9. Aaron,
  10.  
  11. I solved the problem writing TEditView a descendant of TTEView.
  12. TEditView creates, during its initialization time, an invisible
  13. and neutral descendant of TEditText, TNulText.
  14. TNulText works for you making TEditView like a TEditText concerning
  15. the Tab chain. When you write your view resource you have to put in the
  16. right order your TEditText and your TEditView.
  17. I hope this help you.
  18.  
  19. Yours,
  20. Stefano Rampazzo, Prosoft
  21. AppleLink ITA0259
  22.  
  23. {INTERFACE}
  24. TNulText = OBJECT (TEditText)
  25.    fEditView:  TEditView;
  26.    FUNCTION TNulText.DoMouseCommand(VAR theMouse: Point; VAR info: EventInfo;
  27.      VAR hysteresis: Point): TCommand; OVERRIDE;
  28.    PROCEDURE TNulText.Draw(area: Rect); OVERRIDE;
  29.    PROCEDURE TNulText.INulText(itsSuperView: TView; itsLocation, itsSize: VPoint;
  30.      itsMaxChars: INTEGER; itsEditView: TEditView);
  31.    PROCEDURE TNulText.StartEdit(selectChars: BOOLEAN; theTEView: TDialogTEView);
  32. OVERRIDE;
  33.    PROCEDURE TNulText.StopEdit; OVERRIDE;
  34.    PROCEDURE TNulText.Fields(PROCEDURE DoToField(fieldName: Str255; fieldAddr:
  35. Ptr;
  36.     fieldType: INTEGER)); OVERRIDE;
  37. END;
  38.  
  39. TEditView = OBJECT (TTEView)
  40.    fNulText:   TNulText;
  41.    FUNCTION TEditView.DoMouseCommand(VAR theMouse: Point; VAR Info: EventInfo;
  42.    VAR Hysteresis: Point): TCommand; OVERRIDE;
  43.    FUNCTION TEditView.DoKeyCommand(ch: Char; aKeyCode: INTEGER; VAR info:
  44. EventInfo): TCommand; OVERRIDE;
  45.    PROCEDURE TEditView.IEditView(itsDocument: TDocument; itsSuperView: TView;
  46. itsLocation, itsSize: VPoint;
  47.      itsHDeterminer, itsVDeterminer: SizeDeterminer; itsInset: Rect;
  48.      itsTextStyle: TextStyle; itsJustification: INTEGER; itsStyleType,
  49.      itsAutoWrap: BOOLEAN);
  50.    PROCEDURE TEditView.IRes(itsDocument: TDocument; itsSuperView: TView; VAR
  51. itsParams: Ptr); OVERRIDE;
  52.    FUNCTION TEditView.MakeNulText: TNulText;
  53.    PROCEDURE TEditView.Fields(PROCEDURE DoToField(fieldName: Str255; fieldAddr:
  54. Ptr;
  55.     fieldType: INTEGER)); OVERRIDE;
  56. END;
  57.  
  58. {IMPLEMENTATION}
  59.  
  60. FUNCTION TNulText.DoMouseCommand(VAR theMouse: Point; VAR info: EventInfo;
  61.      VAR hysteresis: Point): TCommand; OVERRIDE;
  62. BEGIN
  63.    DoMouseCommand := gNoChanges;
  64. END;
  65.  
  66. PROCEDURE TNulText.Draw(area: Rect); OVERRIDE;
  67. BEGIN
  68. END;
  69.  
  70. PROCEDURE TNulText.INulText(itsSuperView: TView; itsLocation, itsSize: VPoint;
  71.      itsMaxChars: INTEGER; itsEditView: TEditView );
  72. BEGIN
  73.    IEditText(itsSuperView,itsLocation,itsSize,itsMaxChars);
  74.    fEditView:=itsEditView;
  75. END;
  76.  
  77. PROCEDURE TNulText.StartEdit(selectChars: BOOLEAN; theTEView: TDialogTEView);
  78. OVERRIDE;
  79. VAR
  80.    myExtent:   VRect;
  81.    minToSee:   Point;
  82.    itsWindow:  TWindow;
  83. BEGIN
  84. {$IFC qDebug}
  85. IF fEditView = NIL THEN
  86.    BEGIN
  87.    ProgramBreak('the TEditView is nil.');
  88.    EXIT(StartEdit);
  89.    END;
  90. {$ENDC}
  91.  
  92. IF fTEView <> NIL THEN
  93. BEGIN
  94.    fTEView.InstallSelection(TRUE, FALSE);
  95.    fTEView.InstallEditText(NIL, FALSE);
  96.    fTEView := NIL;
  97. END;
  98. itsWindow := GetWindow;
  99. IF itsWindow <> NIL THEN
  100.    itsWindow.SetTarget(fEditView);
  101. fEditView.GetExtent(myExtent);
  102. InsetVRect(myExtent, - 10, - 10);
  103. minToSee.h := MIN(fSize.h + 10, kMaxCoord);
  104. minToSee.v := MIN(fSize.v + 10, kMaxCoord);
  105. fEditView.RevealRect(myExtent, minToSee, kVisible);
  106. END;
  107.  
  108. PROCEDURE TNulText.StopEdit; OVERRIDE;
  109. BEGIN
  110.    TESetSelect (0,0,fEditView.fhTE);
  111. END;
  112.  
  113. PROCEDURE TNulText.Fields(PROCEDURE DoToField(fieldName: Str255; fieldAddr:
  114. Ptr;
  115.     fieldType: INTEGER)); OVERRIDE;
  116. BEGIN
  117.    DoToField('fEditView', @fEditView, bObject);
  118.    INHERITED Fields(DoToField);
  119. END;
  120.  
  121. FUNCTION TEditView.DoMouseCommand(VAR theMouse: Point; VAR Info: EventInfo;
  122.    VAR Hysteresis: Point): TCommand; OVERRIDE;
  123. VAR
  124.    aDialogView:TDialogView;
  125. BEGIN
  126.    IF gTarget <> SELF then
  127.    BEGIN
  128.    aDialogView:= TDialogView(GetDialogView);
  129.    IF aDialogView.DeselectCurrentEditText THEN
  130.    BEGIN
  131.    GetWindow.SetTarget(SELF);
  132.    DoMouseCommand:= INHERITED DoMouseCommand(theMouse, Info, Hysteresis);
  133.    END
  134.    ELSE
  135.    DoMouseCommand:= gNoChanges;
  136. END
  137.    ELSE
  138.    DoMouseCommand:= INHERITED DoMouseCommand(theMouse, Info, hysteresis);
  139. END;
  140.  
  141. FUNCTION TEditView.DoKeyCommand(ch: Char; aKeyCode: INTEGER; VAR info:
  142. EventInfo): TCommand; OVERRIDE;
  143. VAR
  144.    itsWindow:  TWindow;
  145. BEGIN
  146.    DoKeyCommand := gNoChanges;
  147.    IF IsViewEnabled & fAcceptsChanges & (ch=chTab) THEN
  148.    BEGIN
  149.    InstallSelection(TRUE, FALSE);
  150.    itsWindow := GetWindow;
  151.    IF itsWindow <> NIL THEN itsWindow.SetTarget(fNulText);
  152.    TDialogView(GetDialogView).Tab(info.theShiftKey);
  153.    END
  154.    ELSE
  155.    DoKeyCommand := INHERITED DoKeyCommand(ch, aKeyCode, info);
  156. END;
  157.  
  158. PROCEDURE TEditView.IEditView(itsDocument: TDocument; itsSuperView: TView;
  159. itsLocation, itsSize: VPoint;
  160.      itsHDeterminer, itsVDeterminer: SizeDeterminer; itsInset: Rect;
  161.      itsTextStyle: TextStyle; itsJustification: INTEGER; itsStyleType,
  162.      itsAutoWrap: BOOLEAN);
  163. BEGIN
  164.  
  165. IEditView(itsDocument,itsSuperView,itsLocation,itsSize,itsHDeterminer,itsVDeter
  166. miner,
  167.    itsInset,itsTextStyle,itsJustification,itsStyleType,itsAutoWrap);
  168.    fNulText:=MakeNulText;
  169.    fStyles := NIL;
  170.    fElements := NIL;
  171. END;
  172.  
  173. PROCEDURE TEditView.IRes(itsDocument: TDocument; itsSuperView: TView; VAR
  174. itsParams: Ptr); OVERRIDE;
  175. BEGIN
  176.    INHERITED IRes(itsDocument,itsSuperView,itsParams);
  177.    fNulText:=MakeNulText;
  178. END;
  179.  
  180. FUNCTION TEditView.MakeNulText: TNulText;
  181. VAR
  182.    aNulText:   TNulText;
  183. BEGIN
  184.    New(aNulText);
  185.    FailNil(aNulText);
  186.    aNulText.INulText(fSuperView,gZeroVPt,gZeroVPt,0,SELF);
  187.    WITH aNulText DO
  188.    BEGIN
  189.    fAdornment:=[];
  190.    END;
  191.    MakeNulText:=aNulText;
  192. END;
  193.  
  194. PROCEDURE TEditView.Fields(PROCEDURE DoToField(fieldName: Str255; fieldAddr:
  195. Ptr;
  196.     fieldType: INTEGER)); OVERRIDE;
  197. BEGIN
  198.    DoToField('fNulText', @fNulText, bObject);
  199.    INHERITED Fields(DoToField);
  200. END;
  201.  
  202.